#pragma once

#include <cstdint>

#include "vec2f.h"
#include "vec3f.h"

namespace conversion
{
	template <typename T, typename U, typename V> 
	T clamp(const T value, const U min, const V max)
	{
		return value < min ? min : value > max ? max : value;
	}

	inline uint32_t convert_to_uint32_t(const vec3f v)
	{
		return (clamp(static_cast<int>(v[2] * 255), 0, 255) << 0) |
			(clamp(static_cast<int>(v[1] * 255), 0, 255) << 8) |
			(clamp(static_cast<int>(v[0] * 255), 0, 255) << 16);
	}
}